// See #130494

#![feature(pin_ergonomics)]
#![allow(incomplete_features)]

fn f(x: &pin  const i32) {}
fn g<'a>(x: &  'a pin const  i32) {}
fn h<'a>(x: &  'a pin  
mut i32) {}
fn i(x: &pin      mut  i32) {}

struct Foo;

impl Foo {
    fn f(&pin   const self) {}
    fn g<'a>(&   'a pin const    self) {}
    fn h<'a>(&    'a pin
mut self) {}
    fn i(&pin      mut   self) {}
}

fn borrows() {
    let mut foo = 0_i32;
    let x: Pin<&mut _> = & pin 
    mut    foo;

    let x: Pin<&_> = &
    pin                const 
    foo;
}

fn patterns<'a>(
    &pin         mut     x: &pin 
    mut 
    i32,
    &
    pin         
         const
         y: &
    'a pin 
    const 
    i32,
    ref      pin      mut      z: i32,
    mut 
    ref      
       pin     
    const
          w: i32,
) {}
